﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DiveManager
{
    public partial class SupplierDetails : Form
    {
        public string id_weitergabe;
        
        protected DiveDatabaseEntities diveDatabase;
        protected BindingSource bindingSource;
        
        public string id_search;

        
        public SupplierDetails()
        {
            InitializeComponent();

            // Init Database
            diveDatabase = new DiveDatabaseEntities();
            bindingSource = new BindingSource();
        }

        private void btExit_Click(object sender, EventArgs e)
        {
            //Beenden von SupplierDetail
            this.Close();
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            //Öffnen der Supplier_Edit Form
            Supplier_Edit supedit = new Supplier_Edit();
            supedit.Weitergabe_Edit = id_search;
            supedit.Show();     
        }

        protected void LoadData()
        {
            
            Guid id_guid = new Guid(txLNR.Text);
            IQueryable<Supplier_History> dataQuery = from sh in diveDatabase.Supplier_History
                            where sh.Supplier_ID == id_guid 
                            select sh;

            // Bind Data to BindingSource
            bindingSource.DataSource = dataQuery;

            // Bind BindingSource to List
            HistoryList.DataSource = bindingSource;


            // Hide ID-Columns
            HistoryList.Columns["ID"].Visible = false;
            HistoryList.Columns["Supplier_ID"].Visible = false;
            HistoryList.Columns["Changes"].Visible = true;
            HistoryList.Columns["User"].Visible = false;


            // Set Column Headers
            HistoryList.Columns["Changes"].HeaderText = "Änderungen";


        }

        private void SupplierDetails_Load(object sender, EventArgs e)
        {
            //Übernahme der GUID aus der normalen Lieferantenanzeige
            this.id_search = Weitergabe_Details;
            txLNR.Text = id_search;
            //------------------------------------------------------
            //Ausgabe der Grunddaten aus der DB
            //ID ist String und wird in GUID convertiert
            Guid id_guid = new Guid(id_search);

            //Abfrage in Supplier_Main DB
            var query_main = from sm in diveDatabase.Supplier_Main
                        where sm.ID == id_guid
                        select sm;

            foreach (var sm in query_main)
            {
                string firma = sm.Firma;
                string kdnr = sm.KDNR_Lieferant;

                txSupplier.Text = firma;
                txKDNR.Text = kdnr;
                
            }

            //Abfrage in Supplier_Kommunkikation
            var query_kommunikation = from sk in diveDatabase.Supplier_Kommunication
                                      where sk.ID == id_guid
                                      select sk;

            foreach (var sk in query_kommunikation)
            {
                string telefon1 = sk.Telefon1;
                string telefon2 = sk.Telefon2;
                string fax = sk.Fax;
                string mobil1 = sk.Mobil1;
                string mobil2 = sk.Mobil2;
                string mail = sk.Email;
                string www = sk.WWW;

                txTelefon1.Text = telefon1;
                txTelefon2.Text = telefon2;
                txFax.Text = fax;
                txMobil1.Text = mobil1;
                txMobil2.Text = mobil2;
                txEmail.Text = mail;
                txWWW.Text = www;
            }

            //Abfrage in Supplier_Adress
            var query_adress = from sa in diveDatabase.Supplier_Adress
                               where sa.ID == id_guid
                               select sa;

            foreach (var sa in query_adress)
            {
                string strasse = sa.Strasse;
                string hsnr = sa.HSNR;
                string adrzu = sa.Adr_Zusatz;
                string plz = sa.PLZ.ToString();
                string ort = sa.Ort;
                string land = sa.Land;

                txStrasse.Text = strasse;
                txHSNR.Text = hsnr;
                txAdrZusatz.Text = adrzu;
                txPLZ.Text = plz;
                txOrt.Text = ort;
                txLand.Text = land;
            }

            //Abfrage in Supplier_Financial
            var query_financial = from sfi in diveDatabase.Supplier_Financial
                                  where sfi.ID == id_guid
                                  select sfi;

            foreach (var sfi in query_financial)
            {
                string bank = sfi.Bank;
                string konto = sfi.Konto;
                string blz = sfi.BLZ;
                string iban = sfi.IBAN;
                string bic = sfi.BIC;

                txBank.Text = bank;
                txKonto.Text = konto;
                txBLZ.Text = blz;
                txIBAN.Text = iban;
                txBIC.Text = bic;
            }

            //Abfrage in Supplier_Registration
            var query_registration = from sreg in diveDatabase.Supplier_Registration
                                     where sreg.ID == id_guid
                                     select sreg;

            foreach (var sreg in query_registration)
            {
                string ustid = sreg.UST_ID;
                string strnr = sreg.STNR;
                string finanzamt = sreg.Finanzamt;
                string regeintrag = sreg.Reg_Eintrag;
                string regsitz = sreg.Reg_Sitz;

                txUST.Text = ustid;
                txSteuerNr.Text = strnr;
                txFinanzamt.Text = finanzamt;
                txRegEintrag.Text = regeintrag;
                txRegSitz.Text = regsitz;
            }

            //Ausgabe des Eintrittsdatum in txAufnahme
            //Ausgabe des Gesamtumsatzes in txUmsatzGesamt
            //Ausgabe der offenen Forderungen in txOffeneRechnungen

            //Die Historie zu diesem Lieferanten in HistoryList ausgeben
            LoadData();
            
            //Alle Artikel dieses Lieferanten in ArtikelList ausgeben



        }

        public string Weitergabe_Details
        {
            get;
            set;
        }


        //Warum nicht laufen????????????????????????????????????????????????????????????????????
        //??????????????????????????????????????????????????????????????????????????????????????
        //Öffnen der Artikelübersicht für diesen Lieferanten
        private void Artikel_Übersicht_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                //Öffnen der Artikelübersicht für diesen Lieferanten
                
            }
        }

        //Öffnen der Lieferantenhistorie
        private void Historie_Übersicht_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F6)
            {
                //Öffnen der Lieferantenhistorie
                
            }
        }

        //?????????????????????????????????????????????????????????????????????????????????????????

        private void btPrint_Click(object sender, EventArgs e)
        {
            //Lieferantenübersicht erstellen/drucken
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //In den TextBoxen angezeigter Lieferant an SupplierDetails Form
            //übergeben und dort den Lieferanten im Detail anzeigen,
            //wenn entsprechende Rechte vorhanden
            id_weitergabe = txLNR.Text;
            SupplierHistory suphis = new SupplierHistory();
            suphis.Weitergabe_Details = id_weitergabe;
            suphis.Show();
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        




    }
}

